/**
 * 
 */
package com.quanyan.place.service;

import java.util.List;
import java.util.Map;

import com.quanyan.api.APIResponse;
import com.quanyan.common.Plugin.PageObj;
import com.quanyan.place.entity.TbBizPlaceOrder;
import com.quanyan.place.entity.TbBizPlaceOrderItem;
import com.quanyan.place.entity.TbBizPlacePayItem;
import com.quanyan.place.entity.apireq.PlaceRefundDetail;
import com.quanyan.place.entity.apireq.PlaceRefundInfo;
import com.quanyan.place.entity.apireq.ReqPlaceOrderSearchParam;
import com.quanyan.place.entity.apireq.ReqPlaceRefundParam;
import com.quanyan.place.entity.apiresp.RespFixedChildOrder;
import com.quanyan.place.entity.apiresp.RespPlaceOrderDiscountItem;
import com.quanyan.place.entity.apiresp.RespPlaceOrderList;

/**
 * @des  商家端订单管理(new)
 * @author tim
 * @date 2017年4月12日
 */
public interface PlaceOrderAdminService {
	/**
	 * 获取订单管理列表
	 * @param orderSearchParam
	 * @return
	 */
	PageObj<List<RespPlaceOrderList>> getPlaceOrderList(ReqPlaceOrderSearchParam orderSearchParam);
	
	/**
	 *  查看所有子订单
	 * @param orderSearchParam
	 * @return
	 */
	RespFixedChildOrder searchFixedAllChildOrder(ReqPlaceOrderSearchParam orderSearchParam);
	/**
	 * 订单加星
	 * @param placeOrderId
	 * @return 0：加星失败，1：加星成功
	 */
	int addOrderStar(Map<String, Object> params);
	/**
	 * 修改散客订单信息
	 * @param customerName
	 * @param mobile
	 * @return
	 */
	int updateCasualMemberOrder(Map<String,Object> params ); 
	/**
	 * 打印小票
	 * @param placeOrderId
	 * @return
	 */
	String printTicket(String placeOrderId);
	
	/**
	 * 扫码退款
	 * @param refundNo
	 * @param tbBizPlaceOrder
	 * @param tbBizPlacePayItems
	 * @param tbBizPlaceOrderItems
	 * @param orderDiscountItems
	 * @param reqPlaceRefundInfo
	 * @return
	 * @throws Exception
	 */
	 TbBizPlaceOrder placeScanRefund(String refundNo,TbBizPlaceOrder tbBizPlaceOrder,
             List<TbBizPlacePayItem> tbBizPlacePayItems,
             List<TbBizPlaceOrderItem> tbBizPlaceOrderItems,
             List<RespPlaceOrderDiscountItem> orderDiscountItems,PlaceRefundInfo reqPlaceRefundInfo) throws Exception;
    /**
     * 商家端退款
     * @param reqPlaceOrderId
     * @param operateUid
     * @param placeId
     * @param customerId
     * @param isPart
     * @return
     * @throws Exception
     */
    APIResponse<?> placeRefund(PlaceRefundInfo reqPlaceRefundInfo) throws Exception;
    
    /**
     * 获取退款明细列表
     * @param placeRefundDetail
     * @return
     */
	PageObj<List<RespPlaceOrderList>> getPlaceRefundDetailList(ReqPlaceRefundParam refundParam);
	
	/**
	 * 查看退款单号
	 * @param refundNo
	 * @return
	 */
	PlaceRefundInfo searchPlaceRefundDetail(String refundNo);
}
